]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
keyboard: Ignore focus changes from extended keys
authorFlorian Müllner <fmuellner@gnome.org>
Mon, 24 Sep 2012 18:03:53 +0000 (20:03 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Tue, 25 Sep 2012 06:25:26 +0000 (08:25 +0200)
The keyboard is shown/hidden automatically when (un)focusing a
ClutterText actor. This behavior is unwanted when opening the
extended keys popup, so focus changes to the popup are ignored.
However, we also want to ignore focus changes from the popup
to avoid the keyboard hiding itself after pressing an extended
key.

https://bugzilla.gnome.org/show_bug.cgi?id=683546

js/ui/keyboard.js

index f01fdffe4645a912a96cab83cbcd0459922382a2..2389ba5f14e03d61725ce950b1f326e48eacc0b5 100644 (file)
@@ -201,6 +201,7 @@ const Keyboard = new Lang.Class({
 
         this.actor = null;
         this._focusInTray = false;
+        this._focusInExtendedKeys = false;
 
         this._timestamp = global.display.get_current_time_roundtrip();
         Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._redraw));
@@ -289,7 +290,9 @@ const Keyboard = new Lang.Class({
 
         // Showing an extended key popup and clicking a key from the extended keys
         // will grab focus, but ignore that
-        if (focus && (focus._extended_keys || focus.extended_key))
+        let extendedKeysWereFocused = this._focusInExtendedKeys;
+        this._focusInExtendedKeys = focus && (focus._extended_keys || focus.extended_key);
+        if (this._focusInExtendedKeys || extendedKeysWereFocused)
             return;
 
         // Ignore focus changes caused by message tray showing/hiding